package com.ruoyi.quartz.task;

import cn.hutool.core.date.DateUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.plan.domain.StydyPlan;
import com.ruoyi.plan.service.IStydyPlanService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.ruoyi.common.utils.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * 定时任务调度测试
 * 
 * @author ruoyi
 */
@Component("ryTask")
public class RyTask
{
    @Autowired
    private IStydyPlanService stydyPlanService;

    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
    {
        System.out.println(StringUtils.format("执行多参方法： 字符串类型{}，布尔类型{}，长整型{}，浮点型{}，整形{}", s, b, l, d, i));
    }

    public void ryParams(String params)
    {
        System.out.println("执行有参方法：" + params);
    }

    public void ryNoParams()
    {
        System.out.println("执行无参方法");
    }

    public void Sendmaile()
    {
        //获取复习计划
        StydyPlan spc=new StydyPlan();
        List<StydyPlan> Listspc=stydyPlanService.selectStydyPlanList(spc); //获取计划
        List<StydyPlan> Listspc2=new ArrayList<>(); //存储需要执行的计划
        //判断那些计划需要今天执行
        for(StydyPlan sp:Listspc){
            String[] jd=sp.getGoovereplan().split("\\.");
            String str = DateUtil.format(sp.getPlantime(),"yyyy-MM-dd");
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
            try {
                Date myDate = formatter.parse(str);
                Calendar c = Calendar.getInstance();
                c.setTime(myDate);
                c.add(Calendar.DATE, Integer.valueOf(sp.getPlanstage()));
                myDate = c.getTime();

                if(ifdatebigandsmalle(formatter.format(myDate),1)||ifdatebigandsmalle(formatter.format(myDate),3)){ //如果当前阶段就是今天则进行复习
                    //正常的计划执行 || 已经错过的计划执行
                    Listspc2.add(sp);
                }
            } catch (ParseException e1) {
                e1.printStackTrace();
            }
        }


        //此处已经获取到所有需要复习的用户

        //对用户进行分类，判断是否需要发邮件

        // 取出需要复习的单词列表，发送邮件





        System.out.println("ss");
    }

    public Boolean ifdatebigandsmalle(String a,int state){ //state 1== 2> 3<
        // 比较 年 月 日
        SimpleDateFormat sdf  =new SimpleDateFormat("yyyy-MM-dd"); //创建日期转换对象：年 月 日
        String date = a; //假设 设定日期是  2018-11-11
        Date today = new Date();
        try {
            Date dateD = sdf.parse(date); //将字符串转换为 date 类型  Debug：Sun Nov 11 00:00:00 CST 2018

            boolean flag=false;
            switch (state){
                case 1:{
                    flag=Long.valueOf(dateD.getTime()).equals(today.getTime());
                    break;
                }
                case 2:{
                    flag=dateD.getTime() > today.getTime();
                    break;
                }
                case 3:{
                    flag=dateD.getTime() < today.getTime();
                    break;
                }

            }
            return flag;
        } catch (ParseException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
            return false;
        }
    }
}
